package com.uff.hmstpa.controller;

import java.util.Map;

import com.uff.hmstpa.model.ScheduleSystemModel;
import com.uff.hmstpa.model.domain.Appointment;
import com.uff.hmstpa.vision.ScheduleSystemView;

/**
 * [CONTROLADOR] O SchedulerSystemController é uma FACHADA para o
 * SchedulerSystemView para o resto do sistema.
 * É o Controlador que deve estimular o Modelo à mudar seu estado e
 * estimular a Visão para que esta mude.
 *
 * @author Lucas
 */
public interface ScheduleSystemController {

	/**
	 * Através dos comandos o Controlador realiza alterações no Modelo.
	 * @param cmd
	 */
	void setModel(ScheduleSystemModel model);

	ScheduleSystemView getView();

	void setView(ScheduleSystemView view);

	void selectDoctor(String doctorName);

	public void createAppointment(Map<String, Object> params);

	public void deleteAppointment(Appointment app);

	public void editAppointment(Map<String, Object> params);

	public void createPatient(Map<String, Object> params);

	public void deletePatient(Map<String, Object> params);

	public void editPatient(Map<String, Object> params);

}
